---
permalink: /recurring/
title: Recurring Summer Schools
summary: Machine Learning related summer schools that happen recurringly.
description: This page lists machine learning related summer schools that happen recurringly. For each school, the page shows the location, the year it was last held, and the topics covered.
author: awesome-mlss
---

<html>
    <head>
        {% include head.html %}
        <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8115933863612298"
                crossorigin="anonymous"></script>
    </head>
    {% include gtag.html %}
  <body>
    {% include header.html %}
    <div class="container">
        <div class="page-header">
            <div class="row">
                <div class="col-12">
                    <div style="background-color: #f7f7f7; padding: 20px; border-radius: 5px;">
                        <h1 style="font-size: 2em; text-align: left; width: 100%;">
                            {{ site.title }}
                        </h1>
                        <p style="font-size: 1.5em;">
                          {{ site.description }}
                        </p>
                        <div class="row">
                          <div style="text-align: left; font-weight: lighter;" class="col-12 col-md-8">
                            <span class="local-timezone-hide">
                              This community tool serves as a central repository for calls for participation at summer schools in machine learning and other related fields.
                              <br>
                              <br>
                              The dates are made available as countdowns, in local timezones and even as a Google calendar! Deadlines countdowns are shown in <span class="local-timezone">America/New_York</span> time.
                              <br>
                              <br>
                              For further details about the summer schools like details, website, contact info please check their respective pages by clicking on the school name.
                              <br>
                            </span>
                          </div>
                          <div class="col-12 col-md-4">
                              <div class="d-flex justify-content-end">
                                  <a href="https://calendar.google.com/calendar/r?cid={{ site.domain }}/mlss-deadlines.ics" class="btn btn-outline-danger mx-1">
                                      <i class="fa-brands fa-google" aria-hidden="true"></i> Add to Google Calendar
                                  </a>
                                  <a href="/mlss-deadlines.ics" class="btn btn-outline-primary mx-1">
                                      <i class="fa-brands fa-apple" aria-hidden="true"></i> Get the iCal
                                  </a>
                                  <a target="_blank" href="//github.com/{{ site.github_username }}/{{ site.github_repo }}" class="btn btn-outline-dark mx-1">
                                    <i class="fa-brands fa-github" aria-hidden="true"></i> Contribute a school on Github
                                  </a>
                              </div>
                              <hr>
                                <div class="d-flex justify-content-end">
                                  <form class="container">
                                      <div class="row">
                                          <div class="col-12"> 
                                              <div class="filter-label" style="text-align: left;">
                                                  <label for="subject-select" style="margin-bottom: 10px; line-height: 1.5;">
                                                      Filter by topic:
                                                  </label>
                                              </div>
                                          </div>
                                          <div class="col-12">
                                              <select id="subject-select" name="subject-select" multiple="multiple">
                                                  {% for type in site.data.types %}
                                                  <option value="{{ type.sub }}" id="{{ type.sub }}-checkbox">
                                                      {{ type.name }} ({{ type.sub }})
                                                  </option>
                                                  {% endfor %}
                                              </select>
                                          </div>
                                      </div>
                                  </form>
                              </div>                                                            
                        </div>
                    </div>
                </div>
            </div>
            <br>
        </div>
        <div id="confs">
          <div id="past_confs">
            <!-- 
              Instead of summerschools + archive grouped by title,
              we directly read the 'recurringschools' array from your plugin.
            -->
            {% assign confs = site.data.recurringschools | sort: "series" %}
            {% assign this_time = "now" | date: "%s" %}

            {% for conf in confs %}
              {% comment %}
                conf has these top-level fields:
                  - conf.series   (string)
                  - conf.slug     (string)
                  - conf.items    (array of event objects)
                  - conf.id       (if you want it)
                
                Each item in conf.items might have:
                  - name
                  - place
                  - year
                  - start or deadline
                  - sub
              {% endcomment %}

              {% if conf.items.size > 1 %}
              <div id="{{ conf.slug }}" class="ConfItem">
                <div class="row conf-row">
                  <div class="col-12">
                    <span class="conf-title">
                      <a title="Deadline Details" href="{{ site.baseurl }}/recurringschool/{{ conf.slug }}/">
                        {{ conf.series }}
                      </a>
                    </span>
                    <span class="conf-title-small">
                      <a title="Deadline Details" href="{{ site.baseurl }}/recurringschool/{{ conf.slug }}/">
                        {{ conf.series }}
                      </a>
                    </span>
                    <span class="conf-title-icon">
                      <a title="Conference Website" href="{{ conf.items[0].link }}" target="_blank">
                        <img src="/static/img/203-earth.svg" class="badge-link" alt="Link to Conference Website" width="16" height="16" />
                      </a>
                      &ZeroWidthSpace;
                    </span>
                  </div>
                </div>

                <div class="row">
                  {% assign conf_time = conf.items[0].start | date: "%s" %}
                  {% if this_time < conf_time %}
                    {% assign lastnext_place = "Next" %}
                    {% assign lastnext_year = "Next Year Held in" %}
                  {% else %}
                    {% assign lastnext_place = "Last" %}
                    {% assign lastnext_year = "Last Year Held in" %}
                  {% endif %}

                  <div class="col-12 col-sm-6">
                    <div class="meta">
                      {% assign last_place = conf.items[0].place %}
                      <span class="conf-place">
                        <!-- Basic logic to check if it always has the same place (requires at least 3 items) -->
                        {% if conf.items.size > 2 and last_place == conf.items[1].place and last_place == conf.items[2].place %}
                          Always:&nbsp;
                        {% else %}
                          {{ lastnext_place }}:&nbsp;
                        {% endif %}

                        {% assign idx = 0 %}
                        {% if last_place == "TBD" %}
                          {% assign idx = 1 %}
                        {% endif %}
                        {% if conf.items[idx].place == "Online" %}
                          <a href="#">{{ conf.items[idx].place }}</a>
                        {% else %}
                          <a href="http://maps.google.com/?q={{ conf.items[idx].place }}">
                            {{ conf.items[idx].place }}
                          </a>
                        {% endif %}
                      </span>
                      <br>
                      <span class="conf-time">
                        {{ lastnext_year }} {{ conf.items[0].year }}.
                      </span>
                    </div>
                  </div>
                </div>

                <div class="row">
                  <div class="col-12">
                    <!-- 'sub' might be an array of topics in each item -->
                    {% assign subs = conf.items[0].sub %}
                    {% if subs %}
                      {% for sub in subs %}
                        <span title="Click to only show {{ sub }} conferences" 
                              data-sub="{{ sub }}" 
                              class="conf-sub {{ sub }}-tag">
                        </span>
                      {% endfor %}
                    {% endif %}
                  </div>
                </div>
                <hr>
              </div>
              {% endif %}
            {% endfor %}
          </div>
        </div>
      <footer>
          {% include footer.html %}
      </footer>
      <br><br>
    </div>

    <script type="text/javascript" charset="utf-8">
    $(function() {

        {% include load_data.js %}

        // Filter function (updated as needed for your usage)
        function update_filtering(data) {
            var page_url = "{{ site.baseurl }}";
            var currentPath = window.location.pathname; 
            currentPath = currentPath.replace(/\/+$/, '/');
            store.set("{{ site.domain }}-subs", data.subs);

            $(".ConfItem").hide();
            for (const sub of data.all_subs) {
                if (data.subs.includes(sub)) {
                  $('.' + sub + '-tag').closest('.ConfItem').show();
                }
            }

            if (data.subs.length === 0) {
                window.history.pushState("", "", currentPath);
            } else {
                window.history.pushState("", "", currentPath + "?sub=" + data.subs.join(','));
            }
        }

        {% include multiselect_handler.js %}
        
        // Replace short subject code with full subject name from sub2name
        $('.conf-sub').each(function() {
            var sub = $(this).data('sub');
            if (sub2name[sub]) {
              $(this).html(sub2name[sub].toLocaleLowerCase());
            } else {
              $(this).html(sub);
            }
        });
        
        // Clicking a .conf-sub tag triggers a filter
        $('.conf-sub').click(function (e) {
            var csub = $(this).data('sub');
            subs = [csub];
            $("#subject-select").multiselect('deselect', all_subs);
            $("#subject-select").multiselect('select', subs);
            update_filtering({ subs: subs, all_subs: all_subs});
        });
    });
    </script>
  </body>
</html>
